home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2000 #4 / Amiga Plus CD - 2000 - No. 4.iso / PowerPC / Dev / PPCRelease / AutoDocs / ppc.doc < prev   
Encoding:
Text File  |  2000-04-09  |  60.8 KB  |  2,045 lines

  1. TABLE OF CONTENTS
  2.  
  3. ppc.library/PPCAddPortList
  4. ppc.library/PPCAllocMem
  5. ppc.library/PPCAllocVec
  6. ppc.library/PPCAllocVecPooled
  7. ppc.library/PPCCacheClearE
  8. ppc.library/PPCCacheInvalidE
  9. ppc.library/PPCCacheTrashE
  10. ppc.library/PPCCreateMessage
  11. ppc.library/PPCCreatePool
  12. ppc.library/PPCCreatePort
  13. ppc.library/PPCCreatePortList
  14. ppc.library/PPCCreateTask
  15. ppc.library/PPCDeleteMessage
  16. ppc.library/PPCDeletePool
  17. ppc.library/PPCDeletePort
  18. ppc.library/PPCDeletePortList
  19. ppc.library/PPCDeleteTask
  20. ppc.library/PPCFindTask
  21. ppc.library/PPCFindTaskObject
  22. ppc.library/PPCFreeMem
  23. ppc.library/PPCFreeVec
  24. ppc.library/PPCFreeVecPooled
  25. ppc.library/PPCGetAttrs
  26. ppc.library/PPCGetMessage
  27. ppc.library/PPCGetMessageAttr
  28. ppc.library/PPCGetObjectAttrs
  29. ppc.library/PPCGetPortListAttr
  30. ppc.library/PPCGetTaskAttrs
  31. ppc.library/PPCLoadObject
  32. ppc.library/PPCLoadObjectTagList
  33. ppc.library/PPCObtainPort
  34. ppc.library/PPCReadByte
  35. ppc.library/PPCReadLong
  36. ppc.library/PPCReadWord
  37. ppc.library/PPCReleasePort
  38. ppc.library/PPCRemPortList
  39. ppc.library/PPCReplyMessage
  40. ppc.library/PPCRunKernelObject
  41. ppc.library/PPCRunKernelObjectFPU
  42. ppc.library/PPCRunObject
  43. ppc.library/PPCSendMessage
  44. ppc.library/PPCSetAttrs
  45. ppc.library/PPCSetPortListAttr
  46. ppc.library/PPCSetTaskAttrs
  47. ppc.library/PPCSignalTask
  48. ppc.library/PPCStartTask
  49. ppc.library/PPCStopTask
  50. ppc.library/PPCUnLoadObject
  51. ppc.library/PPCWaitPort
  52. ppc.library/PPCWaitPortList
  53. ppc.library/PPCWriteByte
  54. ppc.library/PPCWriteLong
  55. ppc.library/PPCWriteLongFlush
  56. ppc.library/PPCWriteWord
  57. ppc.library/PPCAddPortList                         ppc.library/PPCAddPortList
  58.  
  59.    NAME
  60.     PPCAddPortList -- Add a port to the PPCPortList object
  61.  
  62.    SYNOPSIS
  63.     Success =  PPCAddPortList(PPCPortList,PPCPort)
  64.     D0                        A0          A1
  65.  
  66.     BOOL PPCAddPortList(void*,void*);
  67.  
  68.    FUNCTION
  69.     This function adds a new Port to your PPCPortList object.
  70.  
  71.    INPUT
  72.     PPCPortList - a pointer to the PPCPortList object
  73.     PPCPort     - a pointer to the PPC Message port
  74.  
  75.    RESULT
  76.     Success - A Boolean tells you if the operation was successful.
  77.  
  78.    SEE ALSO
  79.     PPCCreatePortList(), powerup/ppclib/message.h
  80.  
  81. ppc.library/PPCAllocMem                               ppc.library/PPCAllocMem
  82.  
  83.     NAME
  84.     PPCAllocMem -- Alloc a PPC cache aligned memory block
  85.  
  86.     SYNOPSIS
  87.     Memory = PPCAllocMem(size,attributes )
  88.     D0                   D0   D1
  89.  
  90.     void *PPCAllocMem(ULONG,ULONG);
  91.  
  92.     FUNCTION
  93.     Allocates a memoryblock which is aligned to the PPC cache lines.
  94.     You should only use the PPC with memblocks allocated through
  95.     this function.
  96.  
  97.     INPUTS
  98.     Size       - memory block size
  99.     Attributes - memory attributes
  100.  
  101.       o exec/memory.h attributes
  102.  
  103.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  104.         memory area on the PPC side. The Amiga side is still copyback then.
  105.         Synchronized means that accesses to that memory are in order
  106.         for the CPU which is typically used for IO memory.
  107.  
  108.       o MEMF_NOCACHESYNCM68K for a synchronized non cacheable mapped
  109.         memory area on the M68k side. The PPC side is still copyback then.
  110.         Synchronized means that accesses to that memory are in order
  111.         for the CPU which is typically used for IO memory.
  112.  
  113.       o MEMF_NOCACHEPPC for a nonsynchronized non cacheable mapped
  114.         memory area on the PPC side. The Amiga side is still copyback then.
  115.         Not Synchronized means that accesses to that memory may not be
  116.         in order for the CPU which is typically used for framebuffer memory.
  117.  
  118.       o MEMF_NOCACHEM68K for a nosynchronized non cacheable mapped
  119.         memory area on the M68k side. The PPC side is still copyback then.
  120.         Not Synchronized means that accesses to that memory may not be
  121.         in order for the CPU which is typically used for framebuffer memory.
  122.  
  123.       o MEMF_WRITETHROUGHPPC for writethrough mapped memory area on the
  124.         PPC side. The 68k side is still copyback then.
  125.         Writethrough means that the cache updates every write to the
  126.         cache at once to the memory.
  127.  
  128.       o MEMF_WRITETHROUGH68K for writethrough mapped memory area on the
  129.         68k side. The PPC side is still copyback then.
  130.         Writethrough means that the cache updates every write to the
  131.         cache at once to the memory.
  132.  
  133.       If you use the M68k and PPC attribute at the same time the memory
  134.       is mapped noncacheable on both sides. This also means that your
  135.       allocation is 4096 Bytes aligned that may waste memory if you need
  136.       less ram.
  137.  
  138.     RESULT
  139.     Memory - ptr to the memory block
  140.  
  141.     NOTES
  142.     The reason for this routine is that there's a serious
  143.     cache copyback problem when ppc and 68060 cache lines
  144.     cross borders. Then the contents of the memory isn't guranteed.
  145.     The cache issue is explained in detail in Docs/PowerUP.guide
  146.  
  147.     SEE ALSO
  148.     AllocMem(), FreeMem(), exec/memory.h
  149.  
  150. ppc.library/PPCAllocVec                               ppc.library/PPCAllocVec
  151.  
  152.     NAME
  153.     PPCAllocVec -- allocate memory and keep track of the size
  154.  
  155.     SYNOPSIS
  156.     memoryBlock = PPCAllocVec(byteSize, attributes)
  157.     D0                        D0        D1
  158.  
  159.     void *PPCAllocVec(ULONG, ULONG);
  160.  
  161.     INPUTS
  162.     Size       - memory block size
  163.     Attributes - memory attributes
  164.  
  165.       o exec/memory.h attributes
  166.  
  167.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  168.         memory area on the PPC side. The Amiga side is still copyback then.
  169.         Synchronized means that accesses to that memory are in order
  170.         for the CPU which is typically used for IO memory.
  171.  
  172.       o MEMF_NOCACHESYNCM68K for a synchronized non cacheable mapped
  173.         memory area on the M68k side. The PPC side is still copyback then.
  174.         Synchronized means that accesses to that memory are in order
  175.         for the CPU which is typically used for IO memory.
  176.  
  177.       o MEMF_NOCACHEPPC for a nonsynchronized non cacheable mapped
  178.         memory area on the PPC side. The Amiga side is still copyback then.
  179.         Not Synchronized means that accesses to that memory may not be
  180.         in order for the CPU which is typically used for framebuffer memory.
  181.  
  182.       o MEMF_NOCACHEM68K for a nosynchronized non cacheable mapped
  183.         memory area on the M68k side. The PPC side is still copyback then.
  184.         Not Synchronized means that accesses to that memory may not be
  185.         in order for the CPU which is typically used for framebuffer memory.
  186.  
  187.       o MEMF_WRITETHROUGHPPC for writethrough mapped memory area on the
  188.         PPC side. The 68k side is still copyback then.
  189.         Writethrough means that the cache updates every write to the
  190.         cache at once to the memory.
  191.  
  192.       o MEMF_WRITETHROUGH68K for writethrough mapped memory area on the
  193.         68k side. The PPC side is still copyback then.
  194.         Writethrough means that the cache updates every write to the
  195.         cache at once to the memory.
  196.  
  197.       If you use the M68k and PPC attribute at the same time the memory
  198.       is mapped noncacheable on both sides. This also means that your
  199.       allocation is 4096 Bytes aligned that may waste memory if you need
  200.       less ram.
  201.  
  202.     RESULT
  203.     Memory - ptr to the memory block
  204.  
  205.     FUNCTION
  206.     This function works identically to AllocMem(), but tracks the size
  207.     of the allocation.
  208.  
  209.     See the PPCAllocMem() documentation for details.
  210.  
  211.     WARNING
  212.     The result of any memory allocation MUST be checked, and a viable
  213.     error handling path taken.  ANY allocation may fail if memory has
  214.     been filled.
  215.     The cache issue is explained in detail in Docs/PowerUP.guide
  216.  
  217.     SEE ALSO
  218.     PPCFreeVec(), PPCAllocMem()
  219.  
  220. ppc.library/PPCAllocVecPooled                   ppc.library/PPCAllocVecPooled
  221.  
  222.    NAME
  223.     PPCAllocVecPooled -- allocate Pool memory and keep track of the size
  224.  
  225.    SYNOPSIS
  226.     memoryBlock = PPCAllocVecPooled(Pool,byteSize)
  227.     D0                              A0   D0
  228.  
  229.     void *PPCAllocVec(void*, ULONG);
  230.  
  231.    FUNCTION
  232.     This function works identically to PPCAllocPooled(), but tracks
  233.     the size of the allocation.
  234.  
  235.     See the PPCAllocPooled() documentation for details.
  236.  
  237.    SEE ALSO
  238.     PPCFreeVecPooled()
  239.  
  240. ppc.library/PPCCacheClearE                         ppc.library/PPCCacheClearE
  241.  
  242.    NAME
  243.     PPCCacheClearE - Cache clearing with extended control
  244.  
  245.    SYNOPSIS
  246.     PPCCacheClearE(address,length,caches)
  247.                    a0      d0     d1
  248.  
  249.     void PPCCacheClearE(APTR,ULONG,ULONG);
  250.  
  251.    FUNCTION
  252.     This function does the same the CacheClearE() function does
  253.     with the difference that it actually flushes only the memory
  254.     area you specified instead of flushing all by default.
  255.     As it seems the system has problems with an optimized CacheClearE()
  256.     function it is now integrated in the ppc.library
  257.  
  258.  
  259.    INPUTS
  260.     address - Address to start the operation.  This may be rounded
  261.               due to hardware granularity.
  262.     length  - Length of area to be cleared, or $FFFFFFFF to indicate all
  263.               addresses should be cleared.
  264.     caches  - Bit flags to indicate what caches to affect.  The current
  265.               supported flags are:
  266.               CACRF_ClearI ;Clear instruction cache
  267.               CACRF_ClearD ;Clear data cache
  268.               All other bits are reserved for future definition.
  269.  
  270. ppc.library/PPCCacheInvalidE                     ppc.library/PPCCacheInvalidE
  271.  
  272.    NAME
  273.     PPCCacheInvalidE - Cache Invaliding with extended control
  274.  
  275.    SYNOPSIS
  276.     PPCCacheInvalidE(address,length,caches)
  277.                         a0      d0     d1
  278.  
  279.     void PPCCacheInvalidE(APTR,ULONG,ULONG);
  280.  
  281.    FUNCTION
  282.     This function does invalids the contents of the cache for the
  283.     area you specified. This means that dirty lines of the cache
  284.     aren`t written back which may cause wrong data if not used
  285.     correctly.
  286.  
  287.    ATTENTION
  288.     If you`re address area you specify isn`t line aligned you're
  289.     system will run havoc quite fast.
  290.     Because of the wrong data in the cache which may be used by
  291.     other tasks which crosses the invalid page borders.
  292.  
  293.  
  294.    INPUTS
  295.     address - Address to start the operation.  This may be rounded
  296.               due to hardware granularity. 
  297.  
  298.               MUST BE LINESIZE(16 Bytes) ALIGNED !!!!!!!!!!!!!!!
  299.  
  300.     length  - Length of area to be Invalided, or $FFFFFFFF to indicate all
  301.               addresses should be pushed.(NOT INVALID possible here)
  302.  
  303.               MUST BE LINESIZE(16 Bytes) ALIGNED !!!!!!!!!!!!!!!
  304.  
  305.     caches  - Bit flags to indicate what caches to affect.  The current
  306.               supported flags are:
  307.               CACRF_ClearI ;Invalid instruction cache
  308.               CACRF_ClearD ;Invalid data cache
  309.               All other bits are reserved for future definition.
  310.  
  311. ppc.library/PPCCacheTrashE                         ppc.library/PPCCacheTrashE
  312.  
  313.    NAME
  314.     PPCCacheTrashE - Cache Trashing with extended control
  315.  
  316.    SYNOPSIS
  317.     PPCCacheTrashE(address,length,caches)
  318.                    a0      d0     d1
  319.  
  320.     void PPCCacheTrashE(APTR,ULONG,ULONG);
  321.  
  322.    FUNCTION
  323.     This function does clean the contents of the cache for the
  324.     area you specified. This means you have no controll if dirty
  325.     contents is written back or ignored.
  326.     The fastest method to clean the cache for a ram area where
  327.     you don`t care for the contents.
  328.  
  329.    INPUTS
  330.     address - Address to start the operation.  This may be rounded
  331.               due to hardware granularity. 
  332.  
  333.     length  - Length of area to be Invalided.
  334.  
  335.     caches  - Bit flags to indicate what caches to affect.  The current
  336.               supported flags are:
  337.               CACRF_ClearI ;Trash instruction cache
  338.               CACRF_ClearD ;Trash data cache
  339.               All other bits are reserved for future definition.
  340.  
  341.    NOTE
  342.     This was the old CacheInvalidE() but some people demanded
  343.     a real CacheInvalidE so they got it.
  344.  
  345. ppc.library/PPCCreateMessage                     ppc.library/PPCCreateMessage
  346.  
  347.     NAME
  348.     PPCCreateMessage -- Create a Message for a PPCMsgPort
  349.  
  350.     SYNOPSIS
  351.     Message = PPCCreateMessage(PPCPort,Length)
  352.     D0                         A0      D0
  353.  
  354.     void* PPCCreateMessage(void*,ULONG);
  355.  
  356.     FUNCTION
  357.     Creates a Message for PPCPort communication.
  358.        The Length parameter may be useful in the future to optimize
  359.     messages in certain addressspace mappings for IPC in a MP system.
  360.     It isn`t necessary to specify a Length which is > max(DataSize)
  361.     but it may result in a performance win in the future.
  362.     A message and msgdata can`t be reused or touched after a SendMessage
  363.     until the message was replied.
  364.  
  365.     INPUTS
  366.     PPCPort    - Ptr to an object generated by PPCCreatePort
  367.     Length  - Max Length for Messages
  368.  
  369.     RESULT
  370.     PPCMessage - PPCMessage Object ptr.
  371.  
  372.     SEE ALSO
  373.     PPCDeleteMessage(), powerup/ppclib/message.h
  374.  
  375. ppc.library/PPCCreatePool                           ppc.library/PPCCreatePool
  376.  
  377.     NAME
  378.     PPCCreatePool -- Generate a private memory pool header (V39)
  379.  
  380.     SYNOPSIS
  381.     newPool=PPCCreatePool(memFlags,puddleSize,threshSize)
  382.     d0                    d0       d1         d2
  383.  
  384.     void *PPCCreatePool(ULONG,ULONG,ULONG);
  385.  
  386.     FUNCTION
  387.     Allocate and prepare a new memory pool header.    Each pool is a
  388.     separate tracking system for memory of a specific type.  Any number
  389.     of pools may exist in the system.
  390.  
  391.     Pools automatically expand and shrink based on demand.    Fixed sized
  392.     "puddles" are allocated by the pool manager when more total memory
  393.     is needed.  Many small allocations can fit in a single puddle.
  394.     Allocations larger than the threshSize are allocation in their own
  395.     puddles.
  396.  
  397.     At any time individual allocations may be freed.  Or, the entire
  398.     pool may be removed in a single step.
  399.  
  400.     INPUTS
  401.     memFlags - a memory flags specifier, as taken by AllocMem.
  402.  
  403.       o exec/memory.h attributes
  404.  
  405.       o MEMF_NOCACHESYNCPPC for a synchronized non cacheable mapped
  406.         memory area on the PPC side. The Amiga side is still copyback then.
  407.         Synchronized means that accesses to that memory are in order
  408.         for the CPU which is typically used for IO memory.
  409.  
  410.       o MEMF_NOCACHESYNCM68K for a synchronized non cacheable mapped
  411.         memory area on the M68k side. The PPC side is still copyback then.
  412.         Synchronized means that accesses to that memory are in order
  413.         for the CPU which is typically used for IO memory.
  414.  
  415.       o MEMF_NOCACHEPPC for a nonsynchronized non cacheable mapped
  416.         memory area on the PPC side. The Amiga side is still copyback then.
  417.         Not Synchronized means that accesses to that memory may not be
  418.         in order for the CPU which is typically used for framebuffer memory.
  419.  
  420.       o MEMF_NOCACHEM68K for a nosynchronized non cacheable mapped
  421.         memory area on the M68k side. The PPC side is still copyback then.
  422.         Not Synchronized means that accesses to that memory may not be
  423.         in order for the CPU which is typically used for framebuffer memory.
  424.  
  425.       o MEMF_WRITETHROUGHPPC for writethrough mapped memory area on the
  426.         PPC side. The 68k side is still copyback then.
  427.         Writethrough means that the cache updates every write to the
  428.         cache at once to the memory.
  429.  
  430.       o MEMF_WRITETHROUGH68K for writethrough mapped memory area on the
  431.         68k side. The PPC side is still copyback then.
  432.         Writethrough means that the cache updates every write to the
  433.         cache at once to the memory.
  434.  
  435.       If you use the M68k and PPC attribute at the same time the memory
  436.       is mapped noncacheable on both sides. This also means that your
  437.       allocation is 4096 Bytes aligned that may waste memory if you need
  438.       less ram.
  439.  
  440.     puddleSize - the size of Puddles...
  441.     threshSize - the largest allocation that goes into normal puddles
  442.                  This *MUST* be less than or equal to puddleSize
  443.                  (CreatePool() will fail if it is not)
  444.  
  445.     RESULT
  446.     The address of a new pool header, or NULL for error.
  447.  
  448.     SEE ALSO
  449.     PPCDeletePool(), PPCAllocPooled(), PPCFreePooled(), exec/memory.h
  450.  
  451. ppc.library/PPCCreatePort                           ppc.library/PPCCreatePort
  452.  
  453.     NAME
  454.     PPCCreatePort -- Create a PPC Message Port
  455.  
  456.     SYNOPSIS
  457.     Port = PPCCreatePort(Tags)
  458.     D0                   A0
  459.  
  460.     void* PPCCreatePort(struct TagItem*);
  461.  
  462.     FUNCTION
  463.     Creates a local PPC MsgPort to receive messages from the PPC.
  464.        With a specified name you can mark it public to the ppc.library.
  465.        This shouldn`t be missunderstood as a public system port because
  466.     PPCPorts and Amigaports are different entities.
  467.  
  468.     INPUTS
  469.     Tags - Tags to specify a public port for example.
  470.  
  471.       o PPCPORTTAG_NAME,"Name"
  472.         defines the name of a public PPC port.
  473.  
  474.       o PPCPORTTAG_ERROR,(ULONG*) ErrorPtr
  475.         defines the ptr for a more precise return error result
  476.  
  477.     RESULT
  478.     Port - the PPCPort object or NULL
  479.  
  480.     SEE ALSO
  481.     PPCDeletePort(), powerup/ppclib/message.h
  482.  
  483. ppc.library/PPCCreatePortList                   ppc.library/PPCCreatePortList
  484.  
  485.    NAME
  486.     PPCCreatePortList -- Create a List of Ports to wait for
  487.  
  488.    SYNOPSIS
  489.     PPCPortList = PPCCreatePortList(PPCPortArray,ExtSignals)
  490.     D0                              A0           D0
  491.  
  492.     void* PPCCreatePortList(void**,ULONG);
  493.  
  494.    FUNCTION
  495.     This function creates a multi PPCPort object you can
  496.     use to wait for several ports at once.
  497.     If necessary, the Wait function will be called to wait for
  498.     the port signal.  If a message is already present at the
  499.     port, this function will return immediately.  The return
  500.     value is always a pointer to the first PPC Message queued (but
  501.     it is not removed from the queue.
  502.  
  503.    INPUT
  504.     PPCPortArray - a pointer to a PPC Message port array..NULL terminated
  505.     ExtSignals   - mask of extended signals you wanna wait for
  506.                    additionally to the PPCPorts.
  507.  
  508.    RESULT
  509.     PPCPortList - a pointer to the portlist object or NULL
  510.  
  511.    SEE ALSO
  512.     PPCGetMessage(), powerup/ppclib/message.h
  513.  
  514. ppc.library/PPCCreateTask                           ppc.library/PPCCreateTask
  515.  
  516.     NAME
  517.     PPCCreateTask -- Create PPC Task
  518.  
  519.     SYNOPSIS
  520.     TaskObject = PPCCreateTask( ElfObject, Tags )
  521.     D0                          A0         A1
  522.  
  523.     void *PPCCreateTask(void*);
  524.  
  525.     FUNCTION
  526.     Creates a PPCTask on the PPC Kernel with the given ElfObject.
  527.     The ElfObject contains all kinds of informations the loaded .elf
  528.     object provided.
  529.     This function first creates a Msg M68k Process which is used for
  530.     all kinds of IO handling the PPCTask needs. Basicly the PPC sends
  531.     small internal msgs which tell the 68k Task to allocate    ram, open
  532.     files or call certain OS functions for example.
  533.     It`s obvious that all OS functions you call work on the level of
  534.     this message process which means that certain operations which depend
  535.     on this process in an asynchron manner make no sense.
  536.     Or Task manupulations like RemTask(NULL) or simular things also
  537.     make no sense from the PPC side.
  538.     Well..if you think a little bit about it you should understand what
  539.     you can do and what not.
  540.  
  541.     ADDON
  542.     (V45)
  543.     Now the Tags are also passed to the M68k Msg CreateProcess which
  544.     is created inside this function. This way you have the complete
  545.     controll over the Filehandles when the PPC M68k process    exits.
  546.     This makes the PPCTASKTAG_INPUTHANDLE, PPCTASKTAG_OUTPUTHANDLE and
  547.     PPCTASKTAG_INPUTHANDLE obsolete. But if you still use these tags
  548.     you overrule following NP_ CreateNewProc() tags.
  549.  
  550.     INPUTS
  551.     ElfObject - ElfObject created by PPCLoadObject()
  552.     Tags      - Tags to specify a the PPCTasks attributes
  553.       o PPCTASKTAG_NAME,"TaskName"
  554.         specifies the PPCTask`s name. The M68k parallel Process is
  555.         called "PPC:MsgHandler "|"TaskName"
  556.       o PPCTASKTAG_ARG1,Arg1
  557.         specifies the gpr3 register when the PPCTask is started which
  558.         is equal to the first parameter in the System V ABI.
  559.         So main(Arg1,Arg2,Arg3,Arg4,Arg5,Arg6,Arg7,Arg8) can be used in
  560.         C.
  561.       o PPCTASKTAG_ARG2,Arg2
  562.         specifies the gpr4 register when the PPCTask is started.
  563.         See PPCTASKTAG_ARG1 explaination.
  564.       o PPCTASKTAG_ARG3,Arg3
  565.         specifies the gpr5 register when the PPCTask is started.
  566.         See PPCTASKTAG_ARG1 explaination.
  567.       o PPCTASKTAG_ARG4,Arg4
  568.         specifies the gpr6 register when the PPCTask is started.
  569.         See PPCTASKTAG_ARG1 explaination.
  570.       o PPCTASKTAG_ARG5,Arg5
  571.         specifies the gpr7 register when the PPCTask is started.
  572.         See PPCTASKTAG_ARG1 explaination.
  573.       o PPCTASKTAG_ARG6,Arg6
  574.         specifies the gpr8 register when the PPCTask is started.
  575.         See PPCTASKTAG_ARG1 explaination.
  576.       o PPCTASKTAG_ARG7,Arg7
  577.         specifies the gpr9 register when the PPCTask is started.
  578.         See PPCTASKTAG_ARG1 explaination.
  579.       o PPCTASKTAG_ARG8,Arg8
  580.         specifies the gpr10 register when the PPCTask is started.
  581.         See PPCTASKTAG_ARG1 explaination.
  582.       o PPCTASKTAG_CACHEFLUSH,Boolean (Default TRUE)
  583.         this flag defines if the Kernel would do the automatic CacheFlush
  584.         or if you know it better. Well..this function is more a relict from
  585.         the past...it`s only really useful for taking over the cacheflush
  586.         for IO memory areas yourself. A good suggestion is to let this
  587.         handle the Kernel.
  588.       o PPCTASKTAG_ERROR,(ULONG*) ErrorPtr
  589.         defines the ptr for a more precise return error result
  590.       o PPCTASKTAG_STACKSIZE,(ULONG)    (Default 8192)
  591.         defines the PPCTask stacksize
  592.       o PPCTASKTAG_PRIORITY,(int)        (Default 0)
  593.         defines the PPCTask priority
  594.       o PPCTASKTAG_INPUTHANDLE,BPTR        (Default "nil:")
  595.         defines the M68k Message Task`s Input Handle.
  596.         Read the Process`s pr_Input description in dos/dosextens.h
  597.         (V45) Obsolete...use NP_ CreateNewProc() tags
  598.       o PPCTASKTAG_OUTPUTHANDLE,BPTR        (Default "nil:")
  599.         defines the M68k Message Task`s Output Handle.
  600.         Read the Process`s pr_Output description in dos/dosextens.h
  601.         (V45) Obsolete...use NP_ CreateNewProc() tags
  602.       o PPCTASKTAG_ERRORHANDLE,BPTR        (Default "nil:")
  603.         defines the M68k Message Task`s Error Handle.
  604.         Read the Process`s pr_Error description in dos/dosextens.h
  605.         (V45) Obsolete...use NP_ CreateNewProc() tags
  606.       o PPCTASKTAG_STOPTASK,Boolean        (Default FALSE)
  607.         stops the Task before it runs on the PPC to let the debugger
  608.         controll the initial execution.
  609.       o PPCTASKTAG_EXCEPTIONHOOK,(struct Hook*) (Default NULL=SystemHook)
  610.         sets a custom debugger ExceptionHook for the Task.
  611.         The M68k Hook is called when a PPC TaskObject gets an
  612.         exception which can be processor or software(Kernel Msg)
  613.         related.
  614.         That`s the way the ppc.library calls the Hook:
  615.  
  616.         BOOL CallHookPkt(hook,TaskObject,ExceptionMsg);
  617.  
  618.         The Hook Function is NOT allowed to call PPCLibBase
  619.         functions to avoid deadlocks.
  620.         After the Hook function returns the ExceptionMsg
  621.         contents IS NOT valid anymore.
  622.         So you should copy the ExceptionMsg contents to a private
  623.         buffer and then signal your debugger control task about
  624.         the event.
  625.         The Hook return BOOL should tell the ppc.library if all
  626.         worked fine.
  627.         The ExceptionMsg contains a Type field which describes the
  628.         exception type and then the PPCTask`s context frame.
  629.         There are 2 different Types of exceptions. The cpu exceptions
  630.         like PROGRAM Exceptions and Kernel exception which tell you
  631.         about important events like a STOPTASK and a FINISHTASK.
  632.       o PPCTASKTAG_MSGPORT,PPCPort        (Default NULL)
  633.         creates PPCPort which belongs to the PPCTask, so you don`t have
  634.         to create one yourself in the PPC task if you need it.
  635.         Supported by PPCGetTaskAttr().
  636.       o PPCTASKTAG_STARTUP_MSG,PPCMessage    (Default NULL)
  637.         provides a PPCTask startup msg. This msg will be replied
  638.         by the ppc.library after the PPC Task ends so you can use
  639.         this to know that the PPCTask is gone so a PPCUnloadObject()
  640.         is save.
  641.         Supported by PPCGetTaskAttr()
  642.       o PPCTASKTAG_STARTUP_MSGDATA,Data
  643.         the data ptr or if the length is 0 the additional msgid for the message.
  644.       o PPCTASKTAG_STARTUP_MSGLENGTH,Length
  645.         the length for the message.
  646.       o PPCTASKTAG_STARTUP_MSGID,MsgID
  647.         the length for the message.
  648.       o PPCTASKTAG_WAITFINISH,Boolean    (Default FALSE)
  649.         runs the task in a synchron way, so you don`t have to care
  650.         for the PPCTask communication that much.
  651.         The function doesn`t return until the task completes
  652.         and the return value is not the TaskObject but the
  653.         Task`s return value.
  654.         To check if the task runned correctly check out the
  655.       o PPCTASKTAG_BREAKSIGNAL,Boolean    (Default FALSE)
  656.         activates the CTRL-C;D;E;F PPCTask gateway, so you don`t need
  657.         to use PPCCallOS to check for breaksignals.
  658.       o PPCTASKTAG_ERROR fieldptr.
  659.         With this Tag you can do the same what the old RunTaskObject
  660.         does which interface is a bit limited(compatibility to the
  661.         first ppc.library version)
  662.       o PPCTASKTAG_CPUHINT,ULONG
  663.         The CPU number the task should start on.
  664.         This is only a hint and no gurantee.
  665.  
  666.  
  667.     RESULT
  668.     result    - the PPCTask Object(maybe NULL) or the Result code of the
  669.               PPCTask when used in synchron mode
  670.  
  671.     NOTE
  672.     It doesn't free the ElfObject because you may wanna be able to
  673.     reuse it.
  674.  
  675.     EXAMPLE
  676.  
  677.  
  678.     SEE ALSO
  679.     PPCCreateTask(), PPCRunObject(),
  680.     powerup/ppclib/tasks.h
  681.  
  682. ppc.library/PPCDeleteMessage                     ppc.library/PPCDeleteMessage
  683.  
  684.     NAME
  685.     PPCDeleteMessage -- Delete a PPC Message
  686.  
  687.     SYNOPSIS
  688.     PPCDeleteMessage(PPCMessage)
  689.                      A0
  690.  
  691.     void PPCDeleteMessage(void*);
  692.  
  693.     FUNCTION
  694.     Deletes a PPC Message. You can only delete a msg your
  695.     task allocated and which belongs to your task.
  696.  
  697.     INPUTS
  698.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  699.  
  700.     SEE ALSO
  701.     PPCCreatePort(), powerup/ppclib/message.h
  702.  
  703. ppc.library/PPCDeletePool                           ppc.library/PPCDeletePool
  704.  
  705.     NAME
  706.     PPCDeletePool --  Drain an entire memory pool (V39)
  707.  
  708.     SYNOPSIS
  709.     PPCDeletePool(poolHeader)
  710.                   a0
  711.  
  712.     void PPCDeletePool(void *);
  713.  
  714.     FUNCTION
  715.     Frees all memory in all pudles of the specified pool header, then
  716.     deletes the pool header.  Individual free calls are not needed.
  717.  
  718.     INPUTS
  719.     poolHeader - as returned by CreatePool().
  720.  
  721.     SEE ALSO
  722.     PPCCreatePool(), PPCAllocPooled(), PPCFreePooled()
  723.  
  724. ppc.library/PPCDeletePort                           ppc.library/PPCDeletePort
  725.  
  726.     NAME
  727.     PPCDeletePort -- Delete a PPC Message Port
  728.  
  729.     SYNOPSIS
  730.     Success = PPCDeletePort(PPCPort)
  731.     D0                      A0
  732.  
  733.     BOOL PPCDeletePort(void*);
  734.  
  735.     FUNCTION
  736.     Deletes a local PPC MsgPort when the Port isn`t obtained
  737.     by somebody else. If it`s obtained it returns FALSE so
  738.     you have to decide yourself how you wanna recover this
  739.     problem which maybe caused by a synchronizing problem
  740.     between your M68k and PPC applications
  741.  
  742.     INPUTS
  743.     PPCPort - PPCPort object generated by PPCCreatePort
  744.  
  745.     SEE ALSO
  746.     PPCCreatePort(), powerup/ppclib/message.h
  747.  
  748. ppc.library/PPCDeletePortList                   ppc.library/PPCDeletePortList
  749.  
  750.    NAME
  751.     PPCDeletePortList -- Deletes a PortList object
  752.  
  753.    SYNOPSIS
  754.     PPCDeletePortList(PPCPortList)
  755.                       A0
  756.  
  757.     BOOL PPCDeletePortList(void*);
  758.  
  759.    FUNCTION
  760.     This function deletes the PPCPortList object.
  761.  
  762.    INPUT
  763.     PPCPortList - a pointer to the PPCPortList object
  764.  
  765.    RESULT
  766.     Success - A Boolean tells you if the operation was successful.
  767.  
  768.    SEE ALSO
  769.     PPCCreatePortList(), powerup/ppclib/message.h
  770.  
  771. ppc.library/PPCDeleteTask                           ppc.library/PPCDeleteTask
  772.  
  773.     NAME
  774.     PPCDeleteTask -- Delete PPC Task
  775.  
  776.     SYNOPSIS
  777.     Success PPCDeleteTask(TaskObject)
  778.                           A0
  779.  
  780.     BOOL PPCDeleteTask(void*);
  781.  
  782.     FUNCTION
  783.     Removes a PPC Task
  784.  
  785.     INPUTS
  786.     TaskObject - ptr to the TaskObject returned by PPCCreateTask
  787.  
  788.     INPUTS
  789.     Result - if the remove was successful.
  790.  
  791.     SEE ALSO
  792.     PPCLoadObject(), PPCCreateTask(), PPCRunObject(),
  793.     powerup/ppclib/tasks.h
  794.  
  795. ppc.library/PPCFindTask                               ppc.library/PPCFindTask
  796.  
  797.     NAME
  798.     PPCFindTask -- Find PPC Task
  799.  
  800.     SYNOPSIS
  801.     TaskObject PPCFindTask(Name)
  802.                            A0
  803.  
  804.     void* PPCFindTask(char*);
  805.  
  806.     FUNCTION
  807.     Find PPC Task by Name
  808.  
  809.     INPUTS
  810.     Name - Name of the PPC Task to search for.
  811.  
  812.     Result
  813.     returns a TaskObject with the given name or NULL.
  814.  
  815.     SEE ALSO
  816.     PPCCreateTask(), powerup/ppclib/tasks.h
  817.  
  818. ppc.library/PPCFindTaskObject                   ppc.library/PPCFindTaskObject
  819.  
  820.     NAME
  821.     PPCFindTaskObject -- Check if the PPC TaskID exists
  822.  
  823.     SYNOPSIS
  824.     TaskObject PPCFindTaskObject(TaskObject)
  825.                                  A0
  826.  
  827.     void* PPCFindTaskObject(ULONG);
  828.  
  829.     FUNCTION
  830.     Check if the TaskObject really exists
  831.  
  832.     INPUTS
  833.     TaskObject - TaskObject you search for
  834.  
  835.     RESULT
  836.     TaskObject - TaskObject you searched for or NULL
  837.  
  838.     SEE ALSO
  839.     PPCCreateTask(), PPCFindTask(),
  840.     powerup/ppclib/tasks.h
  841.  
  842. ppc.library/PPCFreeMem                                 ppc.library/PPCFreeMem
  843.  
  844.     NAME
  845.     PPCFreeMem -- Frees a PPC cache aligned memory block
  846.  
  847.     SYNOPSIS
  848.     PPCFreeMem(Memory,size)
  849.                  a1   D0
  850.  
  851.     void PPCFreeMem(APTR,ULONG);
  852.  
  853.     FUNCTION
  854.     Frees a memoryblock which was allocated by PPCAllocMem
  855.  
  856.     INPUTS
  857.     MemoryBlock - memory block
  858.     Size        - memory block size
  859.  
  860.     NOTES
  861.     The reason for this routine is that there's a serious
  862.     cache copyback problem when ppc cache line and 68060 cache line
  863.     cross borders. Then the contents of the memory isn't guranteed.
  864.     The cache issue is explained in detail in Docs/PowerUP.guide
  865.  
  866.     SEE ALSO
  867.     AllocMem(), FreeMem(), exec/memory.h
  868.  
  869. ppc.library/PPCFreeVec                                 ppc.library/PPCFreeVec
  870.  
  871.    NAME
  872.     PPCFreeVec -- return PPCAllocVec() memory to the system
  873.  
  874.    SYNOPSIS
  875.     PPCFreeVec(memoryBlock)
  876.                A1
  877.  
  878.     void PPCFreeVec(void *);
  879.  
  880.    FUNCTION
  881.     Free an allocation made by the PPCAllocVec() call.  The memory will
  882.     be returned to the system pool from which it came.
  883.  
  884.    NOTE
  885.     If a block of memory is freed twice, the system will Guru. The
  886.     Alert is AN_FreeTwice ($01000009).   If you pass the wrong pointer,
  887.     you will probably see AN_MemCorrupt $01000005.  Future versions may
  888.     add more sanity checks to the memory lists.
  889.  
  890.    INPUTS
  891.     memoryBlock - pointer to the memory block to free, or NULL.
  892.  
  893.    SEE ALSO
  894.     PPCAllocVec(), exec/memory.h
  895.  
  896. ppc.library/PPCFreeVecPooled                     ppc.library/PPCFreeVecPooled
  897.  
  898.    NAME
  899.     PPCFreeVecPooled -- return PPCAllocVecPooled() memory to the system
  900.  
  901.    SYNOPSIS
  902.     PPCFreeVecPooled(Pool,memoryBlock)
  903.                      A0   A1
  904.  
  905.     void PPCFreeVecPooled(void*,void *);
  906.  
  907.    FUNCTION
  908.     Free an allocation made by the PPCAllocVecPooled() call.  The memory will
  909.     be returned to the system pool from which it came.
  910.  
  911.    INPUTS
  912.     memoryBlock - pointer to the memory block to free, or NULL.
  913.  
  914.    SEE ALSO
  915.     PPCAllocVecPooled()
  916.  
  917. ppc.library/PPCGetAttrs                               ppc.library/PPCGetAttrs
  918.  
  919.     NAME
  920.     PPCGetAttrs -- Get PPC Attrs
  921.     PPCGetAttrsTags -- Varargs Stub for PPCGetAttrs()
  922.  
  923.     SYNOPSIS
  924.     Result = PPCGetAttrs(Tags )
  925.     D0                   A0
  926.  
  927.     ULONG PPCGetAttrs(struct TagItem*);
  928.     ULONG PPCGetAttrsTags(...);
  929.  
  930.     FUNCTION
  931.     Gives you infos about the PPC enviroment depending on the tag.
  932.  
  933.     INPUTS
  934.     Tags - The supported tags
  935.  
  936.     o PPCINFOTAG_CPU
  937.       returns the version of the processor to detect the PPC
  938.       type the system is running on. See your PowerPC Manuals
  939.       "pvr" descriptions and check out the include powerup/ppclib/ppc.h.
  940.       Use the ti_Data field as the processor number.
  941.  
  942.     o PPCINFOTAG_CPUREV
  943.       returns the revision of the processor.
  944.       Use the ti_Data field as the processor number.
  945.     
  946.     o PPCINFOTAG_CPUCOUNT
  947.       returns the numbers of processors
  948.  
  949.     o PPCINFOTAG_CPUCLOCK
  950.       returns the clock of the cpu in Mhz.
  951.       Use the ti_Data field as the processor number.
  952.  
  953.     o PPCINFOTAG_CPUPLL (V45)
  954.       returns the clock devider of the cpu.
  955.       Use the ti_Data field as the processor number.
  956.  
  957.     o PPCINFOTAG_EXCEPTIONHOOK (V45)
  958.       returns the global exception Hook or NULL.
  959.  
  960.     RESULT
  961.     result - depends on the requested Tags
  962.  
  963.     SEE ALSO
  964.     PPCSetAttrs(), powerup/ppclib/ppc.h
  965.  
  966. ppc.library/PPCGetMessage                           ppc.library/PPCGetMessage
  967.  
  968.     NAME
  969.     PPCGetMessage -- Gets a PPC Message from a PPC Port
  970.  
  971.     SYNOPSIS
  972.     Message = PPCGetMessage(PPCPort)
  973.     D0                      A0
  974.  
  975.     void* PPCGetMessage(void*);
  976.  
  977.     FUNCTION
  978.     Checks for a message in the PPCPort`s msglist and
  979.     removes it from the queue. Until you haven`t replied
  980.     the PPC Message you can read from the embedded Data
  981.     field informations. You MUST NOT write to these
  982.     informations.
  983.  
  984.     INPUTS
  985.     PPCPort - Ptr to PPC Port
  986.  
  987.     RESULT
  988.     PPCMessage - First PPC Message in the PPC Port msglist
  989.                  or NULL if the the msglist is empty.
  990.  
  991.     SEE ALSO
  992.     PPCReplyMessage(), PPCCreateMessage(),
  993.     powerup/ppclib/message.h
  994.  
  995. ppc.library/PPCGetMessageAttr                   ppc.library/PPCGetMessageAttr
  996.  
  997.     NAME
  998.     PPCGetMessageAttr -- Get Infos about a PPC Message
  999.  
  1000.     SYNOPSIS
  1001.     Result = PPCGetMessageAttr(PPCMessage,Attr)
  1002.     D0                         A0         D0
  1003.  
  1004.     ULONG PPCGetMessageAttr(void*,ULONG);
  1005.  
  1006.     FUNCTION
  1007.     Returns informations about a PPC Message. This way you
  1008.     can get a Ptr to the Data the message transports and
  1009.     the length of the message.
  1010.  
  1011.     INPUTS
  1012.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1013.     Attr       - Information Attribute
  1014.       o PPCMSGTAG_DATA
  1015.         returns the Data parameter of the PPC Message.
  1016.         The Data field is most of a time a memory ptr
  1017.         but if the length of the message is 0 it can
  1018.         also be used as an additional msgid.
  1019.       o PPCMSGTAG_DATALENGTH
  1020.         returns the Length of the PPC Message. If the
  1021.         Length is NULL this Message needed no cacheflush
  1022.         and therefore is very fast. If Length is NULL the
  1023.         the Data field can be used as an additional msgid.
  1024.       o PPCMSGTAG_MSGID
  1025.         returns the MSGID of the PPC Message. This may be
  1026.         useful to mark certain msgs to be from a certain
  1027.         type which may simplify the handling of messages.
  1028.  
  1029.     RESULT
  1030.     Result - Returns the informations you requested by the attribute.
  1031.  
  1032.     SEE ALSO
  1033.     PPCGetMessage(), powerup/ppclib/message.h
  1034.  
  1035. ppc.library/PPCGetObjectAttrs                   ppc.library/PPCGetObjectAttrs
  1036.  
  1037.     NAME
  1038.     PPCGetObjectAttrs -- Get Elf Object File(s) information
  1039.     PPCGetObjectAttrsTags -- Varargs Stub for PPCGetObjectAttrs
  1040.  
  1041.     SYNOPSIS
  1042.     Result = PPCGetObjectAttrs(ElfObject,PPCObjectInfo,Tags )
  1043.     D0                         A0        A1            A2
  1044.  
  1045.     ULONG    PPCGetObjectAttrs(void*,struct PPCObjectInfo*,struct TagItem*);
  1046.     ULONG    PPCGetObjectAttrsTags(void*,struct PPCObjectInfo*,...);
  1047.  
  1048.     FUNCTION
  1049.     Gives you certain informations about an ELF PPC binary object
  1050.     or all loaded Elf objects. This way you could get certain
  1051.     symbols,types and all that.
  1052.  
  1053.     INPUTS
  1054.     ElfObject - ElfObject returned by PPCLoadObject()
  1055.     Tags      - Array of Tags
  1056.  
  1057.     RESULT
  1058.  
  1059.     NOTES
  1060.     ELF will be the only format allowed the PowerUP. We don't
  1061.     want alien formats.
  1062.  
  1063.     BUGS
  1064.     Probably a lot
  1065.  
  1066.     SEE ALSO
  1067.     PPCLoadObject(), powerup/ppclib/object.h
  1068.  
  1069. ppc.library/PPCGetPortListAttr                 ppc.library/PPCGetPortListAttr
  1070.  
  1071.     NAME
  1072.     PPCGetPortListAttr -- Get Infos about a PPC PortList
  1073.  
  1074.     SYNOPSIS
  1075.     Result = PPCGetPortListAttr(PPCPortList,Attr)
  1076.     D0                          A0          D0
  1077.  
  1078.     ULONG PPCGetPortListAttr(void*,ULONG);
  1079.  
  1080.     FUNCTION
  1081.     Returns informations about a PPC PortList. This way you
  1082.     can get the needed received signal mask in the case you
  1083.     use the extended signalmask
  1084.  
  1085.     INPUTS
  1086.     PPCPortList - Ptr to a PPCPortList object
  1087.     Attr        - Information Attribute
  1088.       o PPCPORTLISTTAG_EXTENDEDSIGNALS
  1089.         returns the extended signal mask.
  1090.       o PPCPORTLISTTAG_RECEIVEDSIGNALS
  1091.         returns the received signal mask. You need this to see
  1092.         if a msg was received AND if you also got a signal from
  1093.         the extended signalmask.
  1094.  
  1095.     SEE ALSO
  1096.     PPCCreatePortList(), PPCSetPortListAttr(),
  1097.     powerup/ppclib/message.h
  1098.  
  1099. ppc.library/PPCGetTaskAttrs                       ppc.library/PPCGetTaskAttrs
  1100.  
  1101.     NAME
  1102.     PPCGetTaskAttrs -- Get PPC Task Info
  1103.     PPCGetTaskAttrsTags -- Varargs Stub for PPCGetTaskAttrs()
  1104.  
  1105.     SYNOPSIS
  1106.     Result PPCGetTaskAttrs(TaskObject,Tags )
  1107.     D0                     A0         A1
  1108.  
  1109.     ULONG PPCGetTaskAttrs(void*,struct TagItem*);
  1110.     ULONG PPCGetTaskAttrsTags(void*,...);
  1111.  
  1112.     FUNCTION
  1113.     Gives you infos about a Task or all Tasks. It depends on the
  1114.     tags if you get back values or ptrs to a node or list of entries
  1115.     which describe a task or tasks.
  1116.     
  1117.  
  1118.     INPUTS
  1119.     TaskObject - The Task you want infos about or NULL if you mean ALL
  1120.     Tags       - The Tags you want.
  1121.       o PPCTASKINFOTAG_NAME
  1122.         returns the name of the TaskObject
  1123.       o PPCTASKINFOTAG_PRIORITY
  1124.         returns the priority of the TaskObject
  1125.       o PPCTASKINFOTAG_CACHEFLUSH
  1126.         returns the cacheflush flag of the TaskObject.
  1127.         see PPCTASKTAG_CACHEFLUSH for more informations
  1128.       o PPCTASKINFOTAG_STACKSIZE
  1129.         returns the stacksize of the TaskObject
  1130.       o PPCTASKINFOTAG_STATE
  1131.         returns the state of the TaskObject.
  1132.         see exec/task.h TS_* for more informations
  1133.       o PPCTASKINFOTAG_TASK,TaskObject
  1134.         overrules the TaskObject parameter of the function
  1135.       o PPCTASKINFOTAG_ALLTASK,Boolean
  1136.         means that the PPCTASKINFOTAG_HOOK Hook is called for
  1137.         all PPCTasks, so you can get informations for all PPCTasks
  1138.       o PPCTASKINFOTAG_HOOK,(struct Hook*)
  1139.            the Hook function is called for every PPCTask so you can
  1140.         ask for informations about every single task. You must not
  1141.         specify a PPCTASKINFOTAG_ALLTASK in such Hook to avoid a
  1142.         deadlock in such Hook function.
  1143.         Msg Parameter is NULL for now.
  1144.         Object Parameter is the TaskObject
  1145.  
  1146.           HookFunc(Hook, TaskObject, NULL);
  1147.  
  1148.       o PPCTASKINFOTAG_SIGALLOC
  1149.         returns the signal allocmask of a PPCTask
  1150.  
  1151.       o PPCTASKINFOTAG_SIGWAIT
  1152.         returns the signal waitmask of a PPCTask
  1153.  
  1154.       o PPCTASKINFOTAG_SIGRECVD
  1155.         returns the signal received mask of a PPCTask
  1156.  
  1157.       o PPCTASKINFOTAG_USEDSTACK
  1158.         returns how much bytes of the stack is used.
  1159.  
  1160.       o PPCTASKINFOTAG_INPUTHANDLE
  1161.         returns the inputhandle file of the M68k MsgTask
  1162.  
  1163.       o PPCTASKINFOTAG_OUTPUTHANDLE
  1164.         returns the outputhandle file of the M68k MsgTask
  1165.  
  1166.       o PPCTASKINFOTAG_ERRORHANDLE
  1167.         returns the errorhandle file of the M68k MsgTask
  1168.  
  1169.       o PPCTASKINFOTAG_VALUEPTR,(void*)
  1170.         specifies the address where to return register values
  1171.         which may not fit into 32bit.
  1172.  
  1173.       o PPCTASKINFOTAG_STARTUP_MSG (V45)
  1174.         returns the PPCTask`s startup msg. This msg will be replied
  1175.         by the ppc.library after the PPC Task ends so you can use
  1176.         this to know that the PPCTask is gone so a PPCUnloadObject()
  1177.         is save. On the PPC side you can use it as a method to pass
  1178.         data.
  1179.  
  1180.       o PPCTASKINFOTAG_STARTUP_MSGDATA (V45)
  1181.         returns the startup`s MsgData. This data field can be used
  1182.         to pass startup data to the PPC. Like some M68k msgport for
  1183.         example.
  1184.  
  1185.       o PPCTASKINFOTAG_STARTUP_MSGLENGTH (V45)
  1186.         returns the startup`s MsgLength.
  1187.  
  1188.       o PPCTASKINFOTAG_STARTUP_MSGID (V45)
  1189.         returns the startup`s MsgID.
  1190.  
  1191.       o PPCTASKINFOTAG_MSGPORT (V45)
  1192.         returns the PPCPort which belongs to the PPCTask. If you
  1193.         haven`t asked for one in PPCCreateTask() the function returns
  1194.         NULL.
  1195.  
  1196.       o PPCTASKINFOTAG_ELFOBJECT (V45)
  1197.         returns the ElfObject for the TaskObject. This may be useful
  1198.         for debugger like tools. Through the ElfObject you can also
  1199.         find out the filename and other things.
  1200.  
  1201.       o PPCTASKINFOTAG_EXCEPTIONHOOK,(struct Hook*) (V45)
  1202.         installs a new ExceptionHandler Hook.
  1203.         Useful in the combination with a CreateTaskHook function.
  1204.  
  1205.       o PPCTASKINFOTAG_PC,void* ValuePtr
  1206.         returns the SRR0 of the task at the ti_Data ValuePtr address
  1207.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1208.         SRR0 is the program counter.
  1209.         The stability of the value depends on PPCTask`s state.
  1210.  
  1211.       o PPCTASKINFOTAG_MSR,void* ValuePtr
  1212.         returns the SRR1 of the task at the ti_Data ValuePtr address
  1213.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1214.         SRR1 is the MSR
  1215.         The stability of the value depends on PPCTask`s state.
  1216.  
  1217.       o PPCTASKINFOTAG_CR
  1218.         returns the CR of the task as the function result.
  1219.         The stability of the value depends on PPCTask`s state.
  1220.  
  1221.       o PPCTASKINFOTAG_XER
  1222.         returns the CR of the task as the function result.
  1223.         The stability of the value depends on PPCTask`s state.
  1224.  
  1225.       o PPCTASKINFOTAG_LR,void* ValuePtr
  1226.         returns the LR of the task at the ti_Data ValuePtr address
  1227.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1228.         The stability of the value depends on PPCTask`s state.
  1229.  
  1230.       o PPCTASKINFOTAG_CTR,void* ValuePtr
  1231.         returns the CTR of the task at the ti_Data ValuePtr address
  1232.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1233.         The stability of the value depends on PPCTask`s state.
  1234.  
  1235.       o PPCTASKINFOTAG_FPSCR,void* ValuePtr
  1236.         returns the FPSCR of the task at the ti_Data ValuePtr address
  1237.         or PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1238.         The stability of the value depends on PPCTask`s state.
  1239.  
  1240.       o PPCTASKINFOTAG_GPR,RegNum
  1241.         returns the GPR[RegNum] of the task at the ValuePtr address.
  1242.         The stability of the value depends on PPCTask`s state.
  1243.  
  1244.       o PPCTASKINFOTAG_FPR,RegNum
  1245.         returns the GPR[RegNum] of the task at the ValuePtr address.
  1246.         The stability of the value depends on PPCTask`s state.
  1247.  
  1248.       o PPCTASKINFOTAG_WAITFINISHTASK (V45)
  1249.         returns the parent process in which you created
  1250.         a synchron PPC Task. Synchron PPC Task`s are created
  1251.         with the PPCTASKTAG_WAITINFISH,TRUE or the obsolete
  1252.         PPCRunObject() function.
  1253.         The reason for this function is to find the shell
  1254.         task easily and check for a CTRL-C for example.
  1255.  
  1256.     RESULT
  1257.     result - depends on the requested Tags
  1258.  
  1259.     SEE ALSO
  1260.     PPCSetTaskAttrs(), powerup/ppclib/tasks.h
  1261.  
  1262. ppc.library/PPCLoadObject                           ppc.library/PPCLoadObject
  1263.  
  1264.     NAME
  1265.     PPCLoadObject -- Load ELF PPC File
  1266.  
  1267.     SYNOPSIS
  1268.     ElfObject = PPCLoadObject(Name)
  1269.     d0                        a0
  1270.  
  1271.     void *PPCLoadObject(char*);
  1272.  
  1273.     FUNCTION
  1274.     Loads an ELF PPC binary which is created by gcc for
  1275.     example. It can only handle relocatable ELF binaries
  1276.     (ld -r option)
  1277.  
  1278.     INPUTS
  1279.     name - filename
  1280.  
  1281.     RESULT
  1282.     object - ELF Program object which can be started by
  1283.              PPCCreateTask
  1284.  
  1285.     NOTE
  1286.     ELF will be the only format allowed the PowerUP. We don't
  1287.     want alien formats.
  1288.  
  1289.     SEE ALSO
  1290.     PPCUnLoadObject(), PPCCreateTask(), powerup/ppclib/object.h
  1291.  
  1292. ppc.library/PPCLoadObjectTagList             ppc.library/PPCLoadObjectTagList
  1293.  
  1294.     NAME
  1295.     PPCLoadObjectTagList -- Create a PPC Object from an ELF Stream (V45)
  1296.     PPCLoadObjectTags -- Varargs Stub for PPCLoadObjectTagList
  1297.  
  1298.     SYNOPSIS
  1299.     ElfObject = PPCLoadObjectTagList(Tags )
  1300.     D0                               A0
  1301.  
  1302.     void *PPCLoadObjectTagList(struct TagItem*);
  1303.     void *PPCLoadObjectTags(...);
  1304.  
  1305.     FUNCTION
  1306.     Creates an PPC Object from an  ELF PPC binary which is created by gcc
  1307.     for example. It can only handle relocatable ELF binaries
  1308.     (ld -r option). This call is similar to PPCLoadObject() but allows to
  1309.     create objects from ELF files that are already resident in memory.
  1310.  
  1311.     INPUTS
  1312.     tags     - The Tags you want.
  1313.       o PPCELFLOADTAG_ELFNAME
  1314.         pointer to a filename of the elf file or the name of the stram.
  1315.       o PPCELFLOADTAG_ELFADDRESS
  1316.         pointer to the elf stream resident in memory.
  1317.         PPCELFLOADTAG_ELFNAME is the object name then.
  1318.       o PPCELFLOADTAG_ELFLENGTH
  1319.         length of the elf stream. This tag is optional
  1320.       o PPCELFLOADTAG_HOOK
  1321.         Stream IO hook which can be used to replace the open,read,seek
  1322.         stream functions.
  1323.         APTR CallHookPkt(hook,StreamHandle,ElfStreamMsg);
  1324.         The result of this function must be Type depended.
  1325.         Please read powerup/ppclib/object.h for more informations.
  1326.  
  1327.     RESULT
  1328.     object - ELF Program object which can be started by
  1329.               PPCCreateTask()
  1330.  
  1331.     NOTES
  1332.     ELF will be the only format allowed the PowerUP. We don't
  1333.     want alien formats.
  1334.     PPCLOADTAG_ELFNAME and PPCLOADTAG_ELFADDRESS are mutually exclusive.
  1335.  
  1336.     SEE ALSO
  1337.     PPCUnLoadObject(), PPCLoadObject(), PPCCreateTask()
  1338.  
  1339. ppc.library/PPCObtainPort                           ppc.library/PPCObtainPort
  1340.  
  1341.     NAME
  1342.     PPCObtainPort -- Obtain a PPC Message Port
  1343.  
  1344.     SYNOPSIS
  1345.     Port =  PPCObtainPort(Tags)
  1346.     D0                    A0
  1347.  
  1348.     void* PPCObtainPort(struct TagItem*);
  1349.  
  1350.     FUNCTION
  1351.     searches a public PPC MsgPort on the local processor or
  1352.     all processor. A search on the network may also be possible
  1353.     in the future.
  1354.  
  1355.     INPUTS
  1356.     Tags - Tags to specify a public port for example.
  1357.       o PPCPORTTAG_NAME,"Name"
  1358.         defines the name of the PPC port you want to obtain
  1359.  
  1360.       o PPCPORTTAG_ERROR,(ULONG*) ErrorPtr
  1361.         defines the ptr for a more precise return error result
  1362.  
  1363.     RESULT
  1364.     PPCPort - PPCPort object generated by PPCCreatePort
  1365.  
  1366.     SEE ALSO
  1367.     PPCReleasePort(), powerup/ppclib/message.h
  1368.  
  1369. ppc.library/PPCReadByte                               ppc.library/PPCReadByte
  1370.  
  1371.    NAME
  1372.     PPCReadByte -- Read a Long from the PPC
  1373.  
  1374.    SYNOPSIS
  1375.     Result=PPCReadByte(Address)
  1376.     d0                 a0
  1377.  
  1378.     ULONG    PPCReadByte(UBYTE*);
  1379.  
  1380.    FUNCTION
  1381.     This function reads a long by the PPC processor.
  1382.     Quick way to read small amounts of data without cache effects
  1383.  
  1384.    RESULT
  1385.     Result - UBYTE read from the address
  1386.  
  1387.    SEE ALSO
  1388.     PPCWriteByte()
  1389.  
  1390. ppc.library/PPCReadLong                               ppc.library/PPCReadLong
  1391.  
  1392.    NAME
  1393.     PPCReadLong -- Read a Long from the PPC
  1394.  
  1395.    SYNOPSIS
  1396.     Result=PPCReadLong(Address)
  1397.        d0                 a0
  1398.  
  1399.     ULONG    PPCReadLong(ULONG*);
  1400.  
  1401.    FUNCTION
  1402.     This function reads a long by the PPC processor.
  1403.     Quick way to read small amounts of data without cache effects
  1404.  
  1405.    RESULT
  1406.     Result - ULONG read from the address
  1407.  
  1408.    SEE ALSO
  1409.     PPCWriteLong()
  1410.  
  1411. ppc.library/PPCReadWord                               ppc.library/PPCReadWord
  1412.  
  1413.    NAME
  1414.     PPCReadWord -- Read a Long from the PPC
  1415.  
  1416.    SYNOPSIS
  1417.     Result=PPCReadWord(Address)
  1418.     d0                 a0
  1419.  
  1420.     ULONG    PPCReadWord(ULONG*);
  1421.  
  1422.    FUNCTION
  1423.     This function reads a long by the PPC processor.
  1424.     Quick way to read small amounts of data without cache effects
  1425.  
  1426.    RESULT
  1427.     Result - UWORD read from the address
  1428.  
  1429.    SEE ALSO
  1430.     PPCWriteWord()
  1431.  
  1432. ppc.library/PPCReleasePort                         ppc.library/PPCReleasePort
  1433.  
  1434.     NAME
  1435.     PPCReleasePort -- Releases an obtained PPC Message Port
  1436.  
  1437.     SYNOPSIS
  1438.     Success = PPCReleasePort(PPCPort)
  1439.     D0                       A0
  1440.  
  1441.     void PPCReleasePort(void*);
  1442.  
  1443.     FUNCTION
  1444.     Releases a PPC MsgPort, so it may be removed after nobody
  1445.     needs it anymore.
  1446.  
  1447.     INPUTS
  1448.     PPCPort - Ptr to an object generated by PPCCreatePort
  1449.  
  1450.     RESULT
  1451.     Success - Boolean which says if the PPCPort could be released
  1452.               successfully. If this fails the PPCPort is still obtained
  1453.               by somebody else.
  1454.     SEE ALSO
  1455.     PPCObtainPort(), powerup/ppclib/message.h
  1456.  
  1457. ppc.library/PPCRemPortList                         ppc.library/PPCRemPortList
  1458.  
  1459.    NAME
  1460.     PPCRemPortList -- Remove a port from the PPCPortList object
  1461.  
  1462.    SYNOPSIS
  1463.     PPCRemPortList(PPCPortList,PPCPort)
  1464.                    A0          A1
  1465.  
  1466.     void PPCRemPortList(void*,void*);
  1467.  
  1468.    FUNCTION
  1469.     This function removes a PPCPort from your PPCPortList object.
  1470.  
  1471.    INPUT
  1472.     PPCPortList - a pointer to the PPCPortList object
  1473.     PPCPort     - a pointer to the PPC Message port
  1474.  
  1475.    SEE ALSO
  1476.     PPCCreatePortList(), powerup/ppclib/message.h
  1477.  
  1478. ppc.library/PPCReplyMessage                       ppc.library/PPCReplyMessage
  1479.  
  1480.     NAME
  1481.     PPCReplyMessage -- Reply a PPC Message
  1482.  
  1483.     SYNOPSIS
  1484.     Success = PPCReplyMessage(PPCMessage)
  1485.     D0                        A0
  1486.  
  1487.     BOOL PPCReplyMessage(void*);
  1488.  
  1489.     FUNCTION
  1490.     Reply a PPC Message. After this operation the embedded
  1491.     Data informations in the PPC Message isn`t valid anymore.
  1492.     The Message itself is also not valid anymore so any access
  1493.     to the object is not allowed.
  1494.  
  1495.     INPUTS
  1496.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1497.  
  1498.     RESULT
  1499.     Success - A Boolean tells you if the operation was successful.
  1500.  
  1501.     SEE ALSO
  1502.     PPCGetMessage(), powerup/ppclib/message.h
  1503.  
  1504. ppc.library/PPCRunKernelObject                 ppc.library/PPCRunKernelObject
  1505.  
  1506.     NAME
  1507.     PPCRunKernelObject -- Run a Kernel Module
  1508.  
  1509.     SYNOPSIS
  1510.     Result = PPCRunKernelModule(ElfObject, KernelArgs )
  1511.     D0                          A0         A1
  1512.  
  1513.     ULONG    PPCRunKernelModule(void*,struct KernelArgs*);
  1514.  
  1515.     FUNCTION
  1516.     Runs a Kernel Module which can be used as a quick call server
  1517.     module mechanism. You only have to add some kind of
  1518.     dispatcher.
  1519.     It runs under the Superviser mode on the PPC and must not access
  1520.     any PPC Kernel functions.
  1521.  
  1522.     INPUTS
  1523.     ElfObject  - ElfObject created by PPCLoadObject()
  1524.     KernelArgs - Arguments for the Call
  1525.  
  1526.     RESULT
  1527.     Result     - Result of the function call.
  1528.  
  1529.     SEE ALSO
  1530.     PPCLoadObject(), powerup/ppclib/interface.h
  1531.  
  1532. ppc.library/PPCRunKernelObjectFPU           ppc.library/PPCRunKernelObjectFPU
  1533.  
  1534.     NAME
  1535.     PPCRunKernelObjectFPU -- Run a Kernel Module
  1536.  
  1537.     SYNOPSIS
  1538.     Result = PPCRunKernelModule(ElfObject, KernelArgs )
  1539.     FP0                         A0         A1
  1540.  
  1541.     DOUBLE    PPCRunKernelModule(void*,struct KernelArgs*);
  1542.  
  1543.     FUNCTION
  1544.     Runs a Kernel Module which can be used as a quick call server
  1545.     module mechanism. You only have to add some kind of
  1546.     dispatcher.
  1547.     It runs under the Supervisor mode on the PPC and must not access
  1548.     any PPC Kernel functions.
  1549.  
  1550.     INPUTS
  1551.     ElfObject  - ElfObject created by PPCLoadObject()
  1552.     KernelArgs - Arguments for the Call
  1553.  
  1554.     RESULT
  1555.     Result     - FPU Result of the function call. This is the
  1556.                  only difference to PPCRunKernelObject()
  1557.  
  1558.     SEE ALSO
  1559.     PPCLoadObject(), powerup/ppclib/interface.h
  1560.  
  1561. ppc.library/PPCRunObject                             ppc.library/PPCRunObject
  1562.  
  1563.     NAME
  1564.     PPCRunObject -- Runs an ELF PPC File
  1565.  
  1566.     SYNOPSIS
  1567.     ElfObject = PPCRunObject(ElfObject, Argument )
  1568.     D0                       A0         A1
  1569.  
  1570.     void *PPCRunObject(void*,void*);
  1571.  
  1572.     FUNCTION
  1573.     Runs an ELF PPC Object and returns the result.
  1574.  
  1575.     INPUTS
  1576.     object - ptr to the object given by PPCLoadObject()
  1577.  
  1578.     RESULT
  1579.     result - the ElfObject of the loaded PPC program.
  1580.  
  1581.     NOTES
  1582.     ELF will be the only format allowed for PowerUP.
  1583.     We don't want alien formats.
  1584.     If you think you can hack the format of the ElfObject be
  1585.     sure that we'll change the format.
  1586.     THIS FUNCTION IS OBSOLETE AND IT'S ONLY THERE TO BE COMPATIBLE
  1587.     WITH THE FIRST SINGLE TASK ppc.library.
  1588.     Use PPCCreateTask instead.
  1589.  
  1590.     SEE ALSO
  1591.     PPCUnloadObject(), PPCRunObject(),
  1592.     powerup/ppclib/tasks.h
  1593.  
  1594. ppc.library/PPCSendMessage                         ppc.library/PPCSendMessage
  1595.  
  1596.     NAME
  1597.     PPCSendMessage -- Sends a PPC Message to a PPC Port
  1598.  
  1599.     SYNOPSIS
  1600.     Success = PPCSendMessage(PPCPort,PPCMessage,Data,Length,MsgID)
  1601.     D0                       A0      A1         A2   D0     D1
  1602.  
  1603.     BOOL PPCSendMessage(void*,void*,void*,ULONG,ULONG);
  1604.  
  1605.     FUNCTION
  1606.     Sends a PPC Message to a PPC Port which may be controlled
  1607.     by the M68k oder PPC. This way you can pass data between
  1608.     the PPC and the M68k in an abstract way which will be source
  1609.     compatible on the A\BOX OS. After you`ve sent a message
  1610.     you MUST NOT change the Data until your task received a reply.
  1611.     If you only want to send a quick 32Bit Msg to the target task
  1612.     use Data as a 32bit Msg value and Length=0.
  1613.     This way no Cache is flushed.
  1614.  
  1615.     INPUTS
  1616.     PPCPort    - Ptr to an object generated by PPCCreatePort
  1617.     PPCMessage - Ptr to an object generated by PPCCreateMessage
  1618.     Data       - Ptr to the Data you wanna send or additional MsgID
  1619.                  if the Length field is 0.
  1620.     Length     - Length of the Data you wanna send.
  1621.     MsgID      - MsgID code you may use for your msg type detection
  1622.  
  1623.     RESULT
  1624.     Success - A Boolean tells you if the operation was successful.
  1625.  
  1626.     SEE ALSO
  1627.     PPCReplyMessage(), powerup/ppclib/message.h
  1628.  
  1629. ppc.library/PPCSetAttrs                               ppc.library/PPCSetAttrs
  1630.  
  1631.     NAME
  1632.     PPCSetAttrs -- Set PPC Attrs                      (V45)
  1633.     PPCSetAttrsTags -- Varargs Stub for PPCSetAttrs()
  1634.  
  1635.     SYNOPSIS
  1636.     Success = PPCSetAttrs(Tags)
  1637.     D0                    A0
  1638.  
  1639.     BOOL PPCSetAttrs(struct TagItem*);
  1640.     BOOL PPCSetAttrsTags(...);
  1641.  
  1642.     FUNCTION
  1643.     Sets certain flags for the PPC enviroment.
  1644.  
  1645.     INPUTS
  1646.     Tags - The tags you want infos about.
  1647.  
  1648.     o PPCINFOTAG_EXCEPTIONHOOK
  1649.       sets the global exception Hook.
  1650.       Check out the include powerup/ppclib/ppc.h and powerup/ppclib/tasks.h
  1651.       for more informations.
  1652.  
  1653.     o PPCINFOTAG_TASKHOOK
  1654.       adds a hook to the task hook event list.
  1655.       This hook is called if a task is created, deleted or changed
  1656.       in some way. This way you could add support to the debugger to
  1657.       catch the next created ppc task.
  1658.       Check out the include powerup/ppclib/ppc.h and powerup/ppclib/tasks.h
  1659.       for more informations.
  1660.  
  1661.     o PPCINFOTAG_TASKHOOK
  1662.       removes a task hook.
  1663.  
  1664.     RESULT
  1665.     success - If the operation was successful
  1666.  
  1667.     SEE ALSO
  1668.     PPCGetAttrs(), powerup/ppclib/ppc.h
  1669.  
  1670. ppc.library/PPCSetPortListAttr                 ppc.library/PPCSetPortListAttr
  1671.  
  1672.     NAME
  1673.     PPCSetPortListAttr -- Set Infos about a PPC PortList
  1674.  
  1675.     SYNOPSIS
  1676.     PPCSetPortListAttr(PPCPortList,Attr)
  1677.                        A0          D0
  1678.  
  1679.     void PPCSetPortListAttr(void*,ULONG);
  1680.  
  1681.     FUNCTION
  1682.     changes certain PPC PortList attributes. This way you
  1683.     can change the Extended SignalMask for example.
  1684.  
  1685.     INPUTS
  1686.     PPCPortList - Ptr to a PPCPortList object
  1687.     Attr        - Information Attribute
  1688.       o PPCPORTLISTTAG_EXTENDEDSIGNALS,ExtSignalMask
  1689.         changes the PPCPortList extended signalmask to the value you
  1690.         specify
  1691.  
  1692.     SEE ALSO
  1693.     PPCCreatePortList(), PPCGetPortListAttr(),
  1694.     powerup/ppclib/message.h
  1695.  
  1696. ppc.library/PPCSetTaskAttrs                       ppc.library/PPCSetTaskAttrs
  1697.  
  1698.     NAME
  1699.     PPCSetTaskAttrs -- Set PPC Task Info
  1700.     PPCSetTaskAttrsTags -- Varargs Stub for PPCSetTaskAttrs()
  1701.  
  1702.     SYNOPSIS
  1703.     Boolean PPCSetTaskAttrs(TaskObject, Tags )
  1704.     D0                      A0         A1
  1705.  
  1706.     ULONG PPCSetTaskAttrs(void*,struct TagItem*);
  1707.     ULONG PPCSetTaskAttrsStub(void*,...);
  1708.  
  1709.     FUNCTION
  1710.     Gives you the ability to change certain task informations.
  1711.     
  1712.     INPUTS
  1713.     TaskObject - The Task you want infos about or NULL if you mean ALL
  1714.     Tags       - The Tags you want.
  1715.       o PPCTASKINFOTAG_PRIORITY,Priority
  1716.         changes the priority of the TaskObject
  1717.  
  1718.       o PPCTASKINFOTAG_CACHEFLUSH,BOOLEAN
  1719.         changes the cacheflush flag of the TaskObject.
  1720.         see PPCTASKTAG_CACHEFLUSH for more informations
  1721.  
  1722.       o PPCTASKINFOTAG_INPUTHANDLE,BPTR
  1723.         changes the inputhandle file of the M68k MsgTask
  1724.  
  1725.       o PPCTASKINFOTAG_OUTPUTHANDLE,BPTR
  1726.         changes the outputhandle file of the M68k MsgTask
  1727.  
  1728.       o PPCTASKINFOTAG_ERRORHANDLE,BPTR
  1729.         changes the errorhandle file of the M68k MsgTask
  1730.  
  1731.       o PPCTASKINFOTAG_VALUEPTR,(void*)
  1732.         specifies the address to read the register values
  1733.         from which may not fit into 32bit.
  1734.  
  1735.       o PPCTASKINFOTAG_EXCEPTIONHOOK,(struct Hook*)
  1736.         installs a new ExceptionHandler Hook.
  1737.         Useful in the combination with a CreateTaskHook
  1738.         function.
  1739.  
  1740.       o PPCTASKINFOTAG_STOPTASK, BOOL
  1741.         tells the Task that it must stop at the first
  1742.         instruction. This must only be called during
  1743.         a CreateTaskHook function and it makes only
  1744.         sense in the combination with an own trap handler.
  1745.  
  1746.       o PPCTASKINFOTAG_PC,void* ValuePtr
  1747.         changes the SRR0 of the task with the contents
  1748.         from the the ValuePtr address. If you`ve not
  1749.         specifed a ti_Data ValuePtr the valueptr from
  1750.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1751.         SRR0 is the program counter.
  1752.         The stability of the value depends on PPCTask`s
  1753.         state.
  1754.  
  1755.       o PPCTASKINFOTAG_MSR,void* ValuePtr
  1756.         changes the SRR1 of the task with the contents
  1757.         from the the ValuePtr address.
  1758.         If you`ve not specifed a ti_Data ValuePtr the
  1759.         valueptr from PPCTASKINFOTAG_VALUEPTR is used
  1760.         if it exists. SRR1 is the MSR.
  1761.  
  1762.       o PPCTASKINFOTAG_CR,ULONG
  1763.         changes the CR register contents of the task.
  1764.         The stability of the value depends on PPCTask`s
  1765.         state.
  1766.  
  1767.       o PPCTASKINFOTAG_XER,ULONG
  1768.         changes the XER register contents of the task.
  1769.         The stability of the value depends on PPCTask`s
  1770.         state.
  1771.  
  1772.       o PPCTASKINFOTAG_LR,void* ValuePtr
  1773.         changes the LR of the task with the contents from
  1774.         the the ValuePtr address. If you`ve not specifed
  1775.         a ti_Data ValuePtr the valueptr from
  1776.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1777.         The stability of the value depends on PPCTask`s
  1778.         state.
  1779.  
  1780.       o PPCTASKINFOTAG_CTR,void* ValuePtr
  1781.         changes the CTR of the task with the contents from
  1782.         the the ValuePtr address. If you`ve not specifed a
  1783.         ti_Data ValuePtr the valueptr from
  1784.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1785.         The stability of the value depends on PPCTask`s
  1786.         state.
  1787.  
  1788.       o PPCTASKINFOTAG_FPSCR
  1789.         changes the FPSCR of the task with the contents from
  1790.         the the ValuePtr address. If you`ve not specifed a
  1791.         ti_Data ValuePtr the valueptr from
  1792.         PPCTASKINFOTAG_VALUEPTR is used if it exists.
  1793.         The stability of the value depends on PPCTask`s
  1794.         state.
  1795.  
  1796.       o PPCTASKINFOTAG_GPR,RegNum
  1797.         changes the GPR[RegNum] of the task with the contents
  1798.         from the the ValuePtr address which you must specify
  1799.         with PPCTASKINFOTAG_VALUEPTR.
  1800.         The stability of the value depends on PPCTask`s
  1801.         state.
  1802.  
  1803.       o PPCTASKINFOTAG_FPR,RegNum
  1804.         changes the FPR[RegNum] of the task with the contents
  1805.         from the the ValuePtr address which you must specify
  1806.         with PPCTASKINFOTAG_VALUEPTR.
  1807.         The stability of the value depends on PPCTask`s
  1808.         state.
  1809.     RESULT
  1810.     Boolean - to signal an error
  1811.  
  1812.     SEE ALSO
  1813.     PPCGetTaskAttrs(), PPCDeleteTaskInfo(),
  1814.     powerup/ppclib/tasks.h
  1815.  
  1816. ppc.library/PPCSignalTask                           ppc.library/PPCSignalTask
  1817.  
  1818.     NAME
  1819.     PPCSignalTask -- Signal PPC Task
  1820.  
  1821.     SYNOPSIS
  1822.     PPCSignalTask(TaskObject,SignalMask)
  1823.                   A0       D0
  1824.  
  1825.     void PPCSignalTask(void*,ULONG);
  1826.  
  1827.     FUNCTION
  1828.     Sends Signals to a PPC Task.
  1829.  
  1830.     INPUTS
  1831.     TaskObject - TaskObject returned by PPCCreateTask
  1832.     signalmask - SignalMask as known from exec/Signal
  1833.  
  1834.     SEE ALSO
  1835.     PPCCreateTask(), powerup/ppclib/tasks.h
  1836.  
  1837. ppc.library/PPCStartTask                             ppc.library/PPCStartTask
  1838.  
  1839.    NAME
  1840.     PPCStartTask -- Restart a Task
  1841.  
  1842.    SYNOPSIS
  1843.     Result    PPCStartTask(TaskObject,Tags)
  1844.                          A0         A1
  1845.  
  1846.     BOOL    PPCStartTask(void*,struct TagItem*);
  1847.  
  1848.    FUNCTION
  1849.     This is a function only useful for debuggers. It allows a Debugger
  1850.     to restart a PPCTask again after it was stopped.
  1851.     Being stopped means PPCStopTask() or after an Exception where a
  1852.     Task goes into the stop state.
  1853.  
  1854.     INPUTS
  1855.     TaskObject - The Task you want infos about or NULL if you mean ALL
  1856.     Tags       - The Tags you want.
  1857.  
  1858.    RESULT
  1859.     Result - Boolean to show if the function was successful
  1860.  
  1861.    SEE ALSO
  1862.     PPCStopTask(), powerup/ppclib/tasks.h
  1863.  
  1864. ppc.library/PPCStopTask                               ppc.library/PPCStopTask
  1865.  
  1866.    NAME
  1867.     PPCStopTask -- Stop a Task
  1868.  
  1869.    SYNOPSIS
  1870.     Result    PPCStopTask(TaskObject,Tags)
  1871.                         A0          A1
  1872.     
  1873.  
  1874.     BOOL    PPCStopTask(void*,struct TagItem*);
  1875.  
  1876.    FUNCTION
  1877.     This is a function only useful for debuggers. It allows a Debugger
  1878.     to stop a running Task.
  1879.  
  1880.     INPUTS
  1881.     TaskObject - The Task you want infos about or NULL if you mean ALL
  1882.     Tags       - The Tags you want.
  1883.  
  1884.    RESULT
  1885.     Result - Boolean to show if the function was successful
  1886.  
  1887.    SEE ALSO
  1888.     PPCStartTask(), powerup/ppclib/tasks.h
  1889.  
  1890. ppc.library/PPCUnLoadObject                       ppc.library/PPCUnLoadObject
  1891.  
  1892.     NAME
  1893.     PPCUnLoadObject -- UnLoad ELF PPC Object
  1894.  
  1895.     SYNOPSIS
  1896.     PPCUnLoadObject( Object )
  1897.                      A0
  1898.  
  1899.     void PPCUnLoadObject(void*);
  1900.  
  1901.     FUNCTION
  1902.     Unloads an Object created with PPCLoadObject().
  1903.  
  1904.     INPUTS
  1905.     object - ptr to the object given by PPCLoadObject()
  1906.  
  1907.     SEE ALSO
  1908.     PPCUnLoadObject(), PPCCreateTask(), powerup/ppclib/object.h
  1909.  
  1910. ppc.library/PPCWaitPort                               ppc.library/PPCWaitPort
  1911.  
  1912.    NAME
  1913.     PPCWaitPort -- wait for a given PPC Msgport to be non-empty
  1914.  
  1915.    SYNOPSIS
  1916.     PPCMessage = PPCWaitPort(PPCPort)
  1917.     D0                       A0
  1918.  
  1919.     void*    PPCWaitPort(void*);
  1920.  
  1921.    FUNCTION
  1922.     This function waits for the given PPC Msgport to become non-empty.
  1923.     If necessary, the Wait function will be called to wait for
  1924.     the port signal.  If a message is already present at the
  1925.     port, this function will return immediately.  The return
  1926.     value is always a pointer to the first PPC Message queued (but
  1927.     it is not removed from the queue.
  1928.  
  1929.    INPUT
  1930.     PPCPort - a pointer to the PPC Message port
  1931.  
  1932.    RESULT
  1933.     PPCMessage - a pointer to the first PPC Message in the PPCPort msglist.
  1934.  
  1935.    SEE ALSO
  1936.     PPCGetMessage(), powerup/ppclib/message.h
  1937.  
  1938. ppc.library/PPCWaitPortList                       ppc.library/PPCWaitPortList
  1939.  
  1940.    NAME
  1941.     PPCWaitPortList -- wait for a given PPC Msgport List to get a msg
  1942.  
  1943.    SYNOPSIS
  1944.     PPCPort = PPCWaitPortList(PPCPortList)
  1945.     D0                        A0
  1946.  
  1947.     void* PPCWaitPortList(void*)
  1948.  
  1949.    FUNCTION
  1950.     This function waits for a list of PPCPorts. If a message
  1951.     is received by one of the ports the port with the msg is
  1952.     returned so you can use PPCGetMessage on that port.
  1953.     NULL is returned if no signals were received or if an extended
  1954.     signal was received. You should always check the Received
  1955.     Signals in PPCWaitPort when you use an extended Signalmask, so
  1956.     you don`t miss signals.
  1957.     It could happen that you get a message and some private signal
  1958.     and the function returns the PPCPort where the message is.
  1959.     In this case you should check the received signalmask to not
  1960.     miss your private signals.
  1961.  
  1962.    INPUT
  1963.     PPCPortList - a pointer to a PPCPortList object created by
  1964.                   PPCCreatePortList()
  1965.  
  1966.    RESULT
  1967.     PPCPort - a pointer to a port which received a msg or NULL.
  1968.  
  1969.    SEE ALSO
  1970.     PPCGetMessage(), PPCWaitPort(), powerup/ppclib/message.h
  1971.  
  1972. ppc.library/PPCWriteByte                             ppc.library/PPCWriteByte
  1973.  
  1974.    NAME
  1975.     PPCWriteByte -- Write a Long by the PPC
  1976.  
  1977.    SYNOPSIS
  1978.     PPCWriteByte(Address,Value)
  1979.                  a0      d0
  1980.  
  1981.     void    PPCWriteByte(UBYTE*,ULONG);
  1982.  
  1983.    FUNCTION
  1984.     This function writes a long by the PPC processor.
  1985.     Quick way to write small amounts of data without cache effects
  1986.  
  1987.    SEE ALSO
  1988.     PPCReadByte()
  1989.  
  1990. ppc.library/PPCWriteLong                             ppc.library/PPCWriteLong
  1991.  
  1992.    NAME
  1993.     PPCWriteLong -- Write a Long by the PPC
  1994.  
  1995.    SYNOPSIS
  1996.     PPCWriteLong(Address,Value)
  1997.                  a0      d0
  1998.  
  1999.     void    PPCWriteLong(ULONG*,ULONG);
  2000.  
  2001.    FUNCTION
  2002.     This function writes a long by the PPC processor.
  2003.     Quick way to write small amounts of data without cache effects
  2004.  
  2005.    SEE ALSO
  2006.     PPCReadLong()
  2007.  
  2008. ppc.library/PPCWriteLongFlush                   ppc.library/PPCWriteLongFlush
  2009.  
  2010.    NAME
  2011.     PPCWriteLongFlush -- Write a Long by the PPC and Flush Cache
  2012.  
  2013.    SYNOPSIS
  2014.     PPCWriteLongFlush(Address,Value)
  2015.                       a0      d0
  2016.  
  2017.     void    PPCWriteLongFlush(ULONG*,ULONG);
  2018.  
  2019.    FUNCTION
  2020.     This function writes a long by the PPC processor and flushes
  2021.     the instruction cache. The only reason for this function is
  2022.     to write a breakpoint.
  2023.  
  2024.    SEE ALSO
  2025.     PPCWriteLong(),PowerUP/PPCCacheFlush
  2026.  
  2027. ppc.library/PPCWriteWord                             ppc.library/PPCWriteWord
  2028.  
  2029.    NAME
  2030.     PPCWriteWord -- Write a Long by the PPC
  2031.  
  2032.    SYNOPSIS
  2033.     PPCWriteWord(Address,Value)
  2034.                  a0      d0
  2035.  
  2036.     void    PPCWriteWord(UWORD*,ULONG);
  2037.  
  2038.    FUNCTION
  2039.     This function writes a long by the PPC processor.
  2040.     Quick way to write small amounts of data without cache effects
  2041.  
  2042.    SEE ALSO
  2043.     PPCReadWord()
  2044.  
  2045.